package com.tentact.coolmeetingtest.service;

import com.tentact.coolmeetingtest.dao.EmpDao;
import com.tentact.coolmeetingtest.support.RetMsg;
import com.tentact.coolmeetingtest.util.StringUtil;
import com.tentact.coolmeetingtest.vo.Emp;
import com.tentact.coolmeetingtest.vo.EmpState;

import java.util.List;

/**
 * @author 星环
 * @date 2023/1/10 15:44:14
 * @description
 */
public class EmpService {
    EmpDao empDao = new EmpDao();

    /**
     * 登录方法
     *
     * @param username
     * @param password
     * @return <li>1：账户名或密码错误</li>
     * <li>2：系统错误</li>
     * 其它返回
     * <li>0：登录成功</li>
     * <li>-1：用户名或密码为空</li>
     */
    public RetMsg login(String username, String password){
        if(StringUtil.isNullOrEmptyStr(username) || StringUtil.isNullOrEmptyStr(password)){
            return RetMsg.error("用户名或密码为空");
        }
        Emp emp = empDao.getByUsernameAndPassword(username, password);
        if(emp == null){
            return RetMsg.error("账户名或密码错误");
        }
        return RetMsg.suc("登录成功",emp);
    }

    /**
     *
     * @param emp
     * @param confirm_pwd
     * @return -1  密码或确认密码为空 -2
     */
    public RetMsg register(Emp emp, String confirm_pwd) {
        if(StringUtil.isNullOrEmptyStr(emp.getPwd()) || StringUtil.isNullOrEmptyStr(confirm_pwd)){
            return RetMsg.error("密码或确认密码为空");
        }
        if(!emp.getPwd().equals(confirm_pwd)){
            return RetMsg.msg(-2,"两次密码不一致");
        }
        if(empDao.getbyUsername(emp.getUsername()).size() != 0){
            return RetMsg.msg(-3,"用户名重复");
        }
        if(empDao.addEmp(emp) == 1){
            return RetMsg.msg(1,"添加成功");
        }
        return RetMsg.msg(0,"添加失败");

    }

    public List<Emp> getAll() {
        return empDao.getAll();
    }

    public List<Emp> getEmpByState(int state) {
        return empDao.getEmpByState0(state);
    }

    public RetMsg accept(Integer empno) {
        int i = empDao.updateStateByEmpno(empno, EmpState.ACCEPTED.getState());
        return RetMsg.msg(i,i == 1 ? "更新成功" : "更新失败");
    }

    public RetMsg delete(Integer empno) {
        int i = empDao.deleteEmpByEmpno(empno);
        return RetMsg.msg(i,i == 1 ? "删除成功" : "删除失败");
    }


    public List<Emp> searchEmp(Emp emp) {
        return empDao.serchEmp(emp);
    }
    public List<Emp> searchEmpLimited(Emp emp,int page,int i_per_page){
        return empDao.serchEmpLimited(emp,(i_per_page) * (page-1),i_per_page);
    }

    public int getEmpCount(Emp emp) {
        return empDao.getEmpTotalCount(emp);
    }

    public void setEmpStateByEmpno(int empno, int state) {
        empDao.updateStateByEmpno(empno,state);
    }

    public Emp getEmpByUsernameAndPassword(String username, String password) {
        return empDao.getByUsernameAndPassword(username, password);
    }
}
